package com.springapp.dao.dao.impl;

import com.springapp.dao.dao.IUtilisateurDAO;
import com.springapp.model.Utilisateur;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * Created by nicol_000 on 26/08/14.
 */
@Repository
public class UtilisateurDAO implements IUtilisateurDAO{

    @Qualifier("dataSource") //Fait référence au datasource dans le mvc-dispatcher.xml
    @Autowired
    private DataSource dataSource;


    @Override
    public List<Utilisateur> getAllByRef(String sRef) {
        return null;
        //requetes
    }

    @Override
    public Utilisateur getUtilByLogin(String sLogin) {
        return null;
    }

    @Override
    public Utilisateur verifieLoginUtil(Utilisateur _utilmodel) {

        Utilisateur utilisateurModel = null;

        String req = "SELECT ut.IDUtil,ut.nomUtil, ut.prenomUtil, ut.login, ut.password, pr.libelle as 'sProfil', z.libelle as 'sZone', ut.estActif, ut.IDProfil, ut.IDZone "+
                     "FROM Utilisateur ut "+
                     "INNER JOIN Util_Profil pr ON pr.IDProfil = ut.IDUtil "+
                     "INNER JOIN Zone z ON z.IDZone = ut.IDZone "+
                     "WHERE ut.login='"+_utilmodel.getsLogin()+"' AND ut.password='"+_utilmodel.getsPassword()+"' "+
                     "AND ut.estActif = 1";

        Connection conn=null;
        try {
            conn=dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(req);
            ResultSet result=ps.executeQuery();
            while(result.next()){
                if(result != null)
                {
                    //On KILL l'utilisateur actuel et on en recréé un autre avec toutes ses informations.
                    _utilmodel = null;
                    utilisateurModel = new Utilisateur(
                            result.getInt("IDUtil"),
                            result.getString("nomUtil"),
                            result.getString("prenomUtil"),
                            result.getString("login"),
                            result.getString("password"),
                            result.getString("sProfil"),
                            result.getString("sZone"),
                            result.getBoolean("estActif"),
                            result.getInt("IDProfil"),
                            result.getInt("IDZone")
                    );

                }else
                {
                   _utilmodel = null;
                }
            }
            result.close();
            ps.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return utilisateurModel;
    }
}
